// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"

#include "LyraCameraAssistInterface.generated.h"

/** */
UINTERFACE(BlueprintType)
class ULyraCameraAssistInterface : public UInterface
{
	GENERATED_BODY()
};

class ILyraCameraAssistInterface
{
	GENERATED_BODY()

public:
	/**
	 * 获取允许相机穿透的Actor列表。在第三人称相机中非常有用，当你需要跟随相机忽略诸如视角目标集合、Pawn、载具等物体时。
	 */
	virtual void GetIgnoredActorsForCameraPentration(TArray<const AActor*>& OutActorsAllowPenetration) const { }

	/**
	 * 获取防止穿透的目标Actor。通常，这几乎总是视角目标，如果未实现此接口，将保持为真。然而，有时视角目标与需要保持在画面中的根Actor不同。
	 */
	virtual TOptional<AActor*> GetCameraPreventPenetrationTarget() const
	{
		return TOptional<AActor*>();
	}

	/** 当相机穿透焦点目标时调用。如果你想在被重叠时隐藏目标Actor，这会很有用。 */
	virtual void OnCameraPenetratingTarget() { }
};